const jwt = require("jsonwebtoken"); // 确保安装了jsonwebtoken库: npm install jsonwebtoken
const Salt = require("../data/Salt.json");
// JWT 中间件函数
const JWT = (req, res, next) => {
  // 从请求头或者其他位置获取token
  const token = req.headers['authorization']?.split(' ')[1] || req.body.token || req.query.token;
  if (!token) {
    // return res.status(401).json({
    //   message: 'Token缺失，无法验证'
    // });
    return res.json({
      code: 404,
      message: "token缺失,无法验证",
    });
  }

  // 使用你的密钥进行验证 (确保密钥和生成token时使用的一致)
  jwt.verify(token, Salt.Salt, (err, decoded) => {
    if (err) {
      if (err.expiredAt) {
        // console.log('token过期')
        return res.json({
          code: 403,
          message: "token过期",
        });
      } else {
        // console.log('token无效')
        return res.json({
          code: 404,
          message: "token无效",
        });
      }
    }

    // Token验证通过，将解码后的信息附加到请求对象上
    req.user = decoded;

    // 继续处理下一个中间件或路由处理程序
    next();
  });
};

module.exports = JWT;
